import { useRouter } from 'next/router'
import ErrorPage from 'next/error'
import Head from 'next/head'
import { GetStaticPaths, GetStaticProps } from 'next'
import Container from '~/components/blog/container'
import PostBody from '~/components/blog/post-body'
import MoreStories from '~/components/blog/more-stories'
import Header from '~/components/blog/header'
import PostHeader from '~/components/blog/post-header'
import SectionSeparator from '~/components/blog/section-separator'
import Layout from '~/components/blog/layout'
import PostTitle from '~/components/blog/post-title'
import Tags from '~/components/blog/tags'
import { getAllPostsWithSlug, getPostAndMorePosts } from '~/lib/api'
import { CMS_NAME } from '~/lib/constants'
export default function Post({ post, posts, preview }: { post: any, posts: any, preview: any }) {
const router = useRouter()
const morePosts = posts?.edges
if (!router.isFallback && !post?.slug) {
return
}
return (
{router.isFallback ? (
Loading…
) : (
<>
{post.title} | Next.js Blog Example with {CMS_NAME}
{morePosts.length > 0 && }
>
)}
)
}
export const getStaticProps: GetStaticProps = async ({
params,
preview = false,
previewData,
}) => {
const data = await getPostAndMorePosts(params?.slug, preview, previewData)
return {
props: {
preview,
post: data.post,
posts: data.posts,
},
revalidate: 10,
}
}
export const getStaticPaths: GetStaticPaths = async () => {
const allPosts = await getAllPostsWithSlug()
return {
paths: allPosts.edges.map(({ node }: any) => `/posts/${node.slug}`) || [],
fallback: true,
}
}